Skip to content

feat(tui): paste without a placeholder on leader v or leader then paste - #54459

Open
Nowaker wants to merge 1 commit into
anomalyco:v1from
Nowaker:paste-raw-key
Open

Nowaker wants to merge 1 commit into
anomalyco:v1from
Nowaker:paste-raw-key

Conversation

@Nowaker

@Nowaker Nowaker commented Oct 11, 2026

Copy link
Copy Markdown

Note: I'm aware v1 is now the maintenance branch and new features go to v2 only. This PR is here for others to use, and I'll submit the v2 version once I've migrated my whole plugin system to it.

Issue for this PR

Related: #3532, #15767.

Type of change

  • Bug fix
  • New feature
  • Refactor / code improvement
  • Documentation

What does this PR do?

A long paste always becomes a [Pasted ~N lines] placeholder unless summarizing is switched off for every paste, so pasting text to keep editing it inline means toggling the setting twice.

  • input_paste_raw (default <leader>v, command prompt.paste.raw) pastes the clipboard as typed. Like input_paste, it reads the clipboard of the machine OpenCode runs on, and still attaches an image.
  • Over ssh or in a remote tmux that is the wrong clipboard, so a terminal paste that arrives while the leader is pending also goes in as typed, and clears the leader: the terminal's own paste carries the clipboard of the machine you are sitting at.

Documented in keybinds.mdx under "Paste Without a Placeholder".

How did you verify your code works?

  • test/keymap.test.tsx: ctrl+x v runs prompt.paste.raw, and a bracketed paste after ctrl+x reaches the prompt's paste handler with the leader still pending.
  • bun typecheck and bun test in packages/tui.
  • In a real terminal through tmux, ctrl+x followed by tmux's bracketed paste-buffer inserted three lines as typed, where a plain paste became [Pasted ~3 lines].

Checklist

  • I have tested my changes locally
  • I have not included unrelated changes in this PR

This PR is AI generated, but under direct supervision and on request of @Nowaker.

A long paste always became a "[Pasted ~N lines]" placeholder unless
summarizing was switched off for every paste, so pasting text to keep
editing it inline meant toggling the setting twice.

input_paste_raw (default <leader>v, command prompt.paste.raw) pastes
the clipboard as typed. It reads the clipboard the way input_paste
does, on the machine opencode runs on, which is the wrong clipboard
over ssh or a remote tmux attach. For that case a terminal paste that
arrives while the leader is pending also goes in as typed, and clears
the leader: the terminal's own paste carries the clipboard of the
machine the user is at. An image is still attached as usual.
@github-actions

Copy link
Copy Markdown
Contributor

The following comment was made by an LLM, it may be inaccurate:

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant